package com.atguigu.lease.web.admin.service;

import com.atguigu.lease.model.entity.ApartmentInfo;
import com.atguigu.lease.web.admin.vo.apartment.ApartmentDetailVo;
import com.atguigu.lease.web.admin.vo.apartment.ApartmentItemVo;
import com.atguigu.lease.web.admin.vo.apartment.ApartmentQueryVo;
import com.atguigu.lease.web.admin.vo.apartment.ApartmentSubmitVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
* @author liubo
* @description 针对表【apartment_info(公寓信息表)】的数据库操作Service
* @createDate 2023-07-24 15:48:00
*/
public interface ApartmentInfoService extends IService<ApartmentInfo> {

    void customSaveOrUpdate(ApartmentSubmitVo apartmentSubmitVo);

    void customPage(Page<ApartmentItemVo> page, ApartmentQueryVo queryVo);

    ApartmentDetailVo getApartmentDetailById(Long id);

    /**
     * 如果一个业务方法有多个结果的可能！
     * θ.void业务方法）只有一种可能（成功)
     * 1.boolean业务方法O只有两种可能
     * 2. int/result业务方法‘(有多种可能
     * 3、void业务方法()）+自定义异常+抛出异常+全局异常快速处理多种可能
     * 异常处理流派：
     * 更快速返回业务的结果！返回并不是到controller->利用全局异常处理器进行少骤！
         * 优势1：controller正常的业务只需要关注正确的结果即可！
         * 优势2：异常抛出以后，会直达异常处理器，不会进行多层调用！！
         * 优势3：也不影响正常业务
     * 基础技术掌掘：
         * 1.全局异常处理
         * 2.自定义异常类型(code,message，错误的枚举）
         * 创建一个类 实现RuntimeException
         * 3. 抛出异常即可
     */

    void removeApartmentById(Long id);
}
